﻿using System;
using System.Collections.Generic;

namespace UniSender
{
    /// <summary>
    /// Параметры события
    /// </summary>
    public class UniSenderEventArgs : EventArgs
    {
        /// <summary>
        /// Язык
        /// </summary>
        public string Lang { get; set; }

        /// <summary>
        /// Имя метода
        /// </summary>
        public string Method { get; set; }

        /// <summary>
        /// Параметры
        /// </summary>
        public IDictionary<string, object> Args { get; set; }
    }

    /// <summary>
    /// Параметры события успешного завершения запроса
    /// </summary>
    public class UniSenderRequestSuccessEventArgs : UniSenderEventArgs
    {
        /// <summary>
        /// Ответ сервера
        /// </summary>
        public string ResponseText { get; set; }

        /// <summary>
        /// Объектное представление ответа сервиса
        /// </summary>
        public Native.IResponse Response { get; set; }
    }

    /// <summary>
    /// Параметры события возникновения исключения
    /// </summary>
    public class UniSenderExceptionEventArgs : UniSenderEventArgs
    {
        /// <summary>
        /// Исключение
        /// </summary>
        public UniSenderException Exception { get; set; }
    }

    /// <summary>
    /// Параметры события получения предупреждения от сервиса
    /// </summary>
    public class UniSenderWarningEventArgs : UniSenderEventArgs
    {
        /// <summary>
        /// Предупреждения
        /// </summary>
        public string[] Warnings { get; set; }
    }

    /// <summary>
    /// Параметры события получения ошибки от сервиса
    /// </summary>
    public class UniSenderErrorEventArgs : UniSenderEventArgs
    {
        /// <summary>
        /// Описание ошибки
        /// </summary>
        public string Error { get; set; }

        /// <summary>
        /// Код ошибки
        /// </summary>
        public string Code { get; set; }
    }
}
